package main

import (
	"fmt"
	"runtime"
)

func main() {
	//定义一个channel
	c := make(chan int)
	go func() {
		defer fmt.Println("goroutine结束")
		fmt.Println("goroutine正在运行...")
		//runtime.Goexit()写这里会造成死锁，因为channel等待数据时会进行阻塞，但是goroutine已经退出，所以死锁。
		c <- 666         //将666发送给channel c
		runtime.Goexit() //退出goroutine不执行defer
	}()

	num := <-c //从channel c中接受数据,并赋值给num

	fmt.Println("num=", num)
	fmt.Println("main goroutine结束")

}
